/**
 * * 题目名称：用栈操作构建数组
 * * 题目地址：https://leetcode-cn.com/problems/build-an-array-with-stack-operations
 */

// * 思路：循环n次，每次都添加push，循环中判断是否相等，如果不相等则添加pop，相等则j++判断下一个target中的元素。

/*
题目：
给你一个目标数组 target 和一个整数 n。每次迭代，需要从  list = {1,2,3..., n} 中依序读取一个数字。
请使用下述操作来构建目标数组 target ：
Push：从 list 中读取一个新元素， 并将其推入数组中。
Pop：删除数组中的最后一个元素。
如果目标数组构建完成，就停止读取更多元素。
题目数据保证目标数组严格递增，并且只包含 1 到 n 之间的数字。
请返回构建目标数组所用的操作序列。
题目数据保证答案是唯一的。

示例 1：
输入：target = [1,3], n = 3
输出：["Push","Push","Pop","Push"]
解释： 
读取 1 并自动推入数组 -> [1]
读取 2 并自动推入数组，然后删除它 -> [1]
读取 3 并自动推入数组 -> [1,3]
*/

/**
 * @param {number[]} target
 * @param {number} n
 * @return {string[]}
 */
 var buildArray = function(target, n) {
    var arr = [];
    var j = 0;
    var n = target[target.length-1];
    for(var i = 0;i<n;i++){
        arr.push("Push");
        if(target[j]!==i+1){
            arr.push("Pop")
        }else
            j++;
    }
    return arr;
};

// 测试用例

console.time('执行用时');
console.log(buildArray([1,3],3));
console.timeEnd('执行用时');